/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package accesoDatos;

import java.sql.*;
import java.util.Vector;
import logica.*;
/**
 *
 * @author Juan David
 */
public class DaoExencion {
     
    FachadaBD fachada;

    public DaoExencion(){
        fachada = new FachadaBD();
    }
    
    public int guardarExcencion (Exencion E){
        String sql_guardar;
        int numFilas;
        sql_guardar="INSERT INTO Exencion(cod_est,tipo,periodo,valor)VALUES('"+
                E.getCod_est()+"','"+E.getTipo()+"','"+E.getPeriodo()+"','"+E.getValor()+"')";
   
    try{
            Connection conn= fachada.conectar();
            Statement sentencia = conn.createStatement();
            numFilas = sentencia.executeUpdate(sql_guardar);
            conn.close();
            return numFilas;
        }
        catch(SQLException e){ System.out.println(e); }
        catch(Exception e){ System.out.println(e); }
        return -1;
     }

    public Vector<Exencion> consultarExcencion(String cod_est){
        System.out.println("dao consultarExcencion");
        Vector v = new Vector(1,1);
        String sql_select;
        sql_select="SELECT cod_est,tipo,periodo,valor FROM exencion WHERE cod_est='" + cod_est + "';";
        System.out.println("consulta=" + sql_select);
         try{
            Connection conn= fachada.conectar();
            Statement sentencia = conn.createStatement();
            ResultSet tabla = sentencia.executeQuery(sql_select);
            
            while(tabla.next()){
                Exencion ex= new Exencion();
               ex.setCod_est(tabla.getString(1));              
               ex.setTipo(tabla.getString(2));
               ex.setPeriodo(tabla.getString(3));              
               ex.setValor(tabla.getInt(4));
               v.add(ex);
               
            }
            fachada.desconectar(conn);
            System.out.println("Exencion consultada y Conexion cerrada");
            return v;
            
         }
         catch(SQLException e){ System.out.println(e); }
         catch(Exception e){ System.out.println(e); }
        return null;
    }
    
    public Vector<Exencion> generarExencionesPromocion(String fecha_graduacion,String fecha_graduacion2, String periodo,String periodo2){
        
        Vector<Exencion> reporte = new Vector(1,1);
        
        String consulta_sql = "SELECT * FROM Exencion" 
                              +"WHERE cod_est IN(SELECT cod_est from Estudiante where fecha_graduacion between '"+fecha_graduacion+"'and '"+fecha_graduacion2+"')"
                               + "and Excencion.periodo = '"+periodo+"'or Exencion.periodo='"+periodo2+"'";
                              
        
        try{
            Connection c= fachada.conectar();
            Statement sentencia = c.createStatement();
            ResultSet res=sentencia.executeQuery(consulta_sql);
            
            while(res.next()){
                Exencion exencion=new Exencion();
                exencion.setCod_est(res.getString(1));
                exencion.setTipo(res.getString(2));
                exencion.setPeriodo(res.getString(3));
                exencion.setValor(res.getInt(4));
             
                
                reporte.add(exencion);
            }
            
            fachada.desconectar(c);
            System.out.println("Exenciones consultadas por promocion y Conexion cerrada");
            return reporte;
        }
        catch(SQLException e){}
        catch(Exception e){}
        
        return null;
    }
    
    public Vector<Exencion> generarExencionesPeriodo(String periodo){
        Vector reporte = new Vector(1,1);
        
        String consulta_sql = "SELECT * FROM exencion WHERE periodo='" + periodo + "'";
        try{
            Connection c= fachada.conectar();
            Statement sentencia = c.createStatement();
            ResultSet res=sentencia.executeQuery(consulta_sql);
            
            while(res.next()){
                Exencion exencion = new Exencion();
                exencion.setCod_est(res.getString(1));
                exencion.setTipo(res.getString(2));
                exencion.setPeriodo(res.getString(3));
                exencion.setValor(res.getDouble(4));
                reporte.add(exencion);
            }
            
            fachada.desconectar(c);
            System.out.println("Exenciones consultadas por periodo y Conexion cerrada");
            return reporte;
        }
        catch(SQLException e){System.out.println("estoy en la exception SQL");}
        catch(Exception e){System.out.println("estoy en la exlecion padre"+e);}
        
        return null;
    }
}

         
   
            

